home *** CD-ROM | disk | FTP | other *** search
/ Macworld Expo - Develope…Central & Net Innovations / Developer Central and Net Innovators (MacWorld Expo) (January 1999).iso / Developer Central / Bowers Development / Demo AppMaker / Examples / plain C OS8 / Everything / ModalStuff.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-29  |  4.0 KB  |  172 lines  |  [TEXT/CWIE]

  1. /* ModalStuff.c -- Modal dialog */
  2.  
  3. #include <Types.h>
  4. #include <Quickdraw.h>
  5. #include <Controls.h>
  6. #include <Dialogs.h>
  7. #include <Events.h>
  8. #include <Lists.h>
  9. #include <Menus.h>
  10. #include <TextEdit.h>
  11. #include <Appearance.h>
  12. #include <stdlib.h>
  13.  
  14. #include "ResourceDefs.h"
  15. #include "Miscellany.h"
  16. #include "ControlUtils.h"
  17.  
  18. #include "Dispatcher.h"
  19. #include "ModalStuff.h"
  20.  
  21. #define kOKButton        1
  22. #define kToolsPalette        2
  23. #define kPopupsBox        3
  24. #define kFromValuesList2Popup        4
  25. #define kFromMenuPopup        5
  26. #define kListsBox        6
  27. #define kTextListList        7
  28.  
  29. static void        BuildTextListList    (ControlHandle        inControl);
  30.  
  31. /*----------*/
  32. static void        BuildTextListList (
  33.     ControlHandle        inControl)
  34. {
  35.     ListHandle        list;
  36.  
  37.     list = GetListHandle (inControl);
  38.     AddToList ("\pOne",   list);
  39.     AddToList ("\pTwo",   list);
  40.     AddToList ("\pThree", list);
  41.     AddToList ("\pInfinity",  list);
  42.  
  43. }
  44.  
  45. /*----------*/
  46. Boolean        GetModalStuff (
  47.     DModalStuffData*        ioData)
  48. {
  49.     Boolean            result = false;
  50.     ModalStuff*        dialog = NewModalStuff ();
  51.  
  52.     result = AMDialog_RunModal ((AMDialog*)dialog, DLOG_ModalStuff, (AMSignaler*)ioData);
  53.  
  54.     DeleteModalStuff (dialog);
  55.  
  56.     return result;
  57. }
  58.  
  59. //----------
  60. ModalStuff*        NewModalStuff ()
  61. {
  62.     ModalStuff*        dialog;
  63.  
  64.     dialog = (ModalStuff*)malloc (sizeof (ModalStuff));
  65.     ModalStuff_Init (dialog);
  66.     SetClassID (dialog, classModalStuff);
  67.  
  68.     return dialog;
  69. }
  70.  
  71. //----------
  72. void    DeleteModalStuff (
  73.     ModalStuff*        dialog)
  74. {
  75.     ModalStuff_Free (dialog);
  76.     free (dialog);
  77. }
  78.  
  79. //----------
  80. void    ModalStuff_Init (
  81.     ModalStuff*        self)
  82. {
  83.     AMDialog_Init ((AMDialog*)self);
  84. }
  85.  
  86. //----------
  87. void    ModalStuff_Free (
  88.     ModalStuff*        self)
  89. {
  90.     AMDialog_Free ((AMDialog*)self);
  91. }
  92.  
  93. //----------
  94. void    ModalStuff_FinishMake (
  95.     ModalStuff*        self)
  96. {
  97.     self->mOKHandle = AMDialog_GetControlItem ((AMDialog*)self, kOKButton);
  98.     SetDefaultState (self->mOKHandle, true);
  99.     SetDialogDefaultItem (((AMDialog*)self)->mDialog, kOKButton);
  100.     self->mToolsHandle = AMDialog_GetControlItem ((AMDialog*)self, kToolsPalette);
  101.     self->mPopupsHandle = AMDialog_GetControlItem ((AMDialog*)self, kPopupsBox);
  102.     self->mFromValuesList2Handle = AMDialog_GetControlItem ((AMDialog*)self, kFromValuesList2Popup);
  103.     self->mFromMenuHandle = AMDialog_GetControlItem ((AMDialog*)self, kFromMenuPopup);
  104.     self->mListsHandle = AMDialog_GetControlItem ((AMDialog*)self, kListsBox);
  105.     self->mTextListHandle = AMDialog_GetControlItem ((AMDialog*)self, kTextListList);
  106. }
  107.  
  108. //----------
  109. void    ModalStuff_ConnectToData (
  110.     ModalStuff*        self,
  111.     AMSignaler*        inData)
  112. {
  113.     AMDialog_ConnectToData ((AMDialog*)self, inData);
  114.     self->mData = (DModalStuffData*) inData;
  115.  
  116.     SetControlValue (self->mToolsHandle, GetTools2 (self->mData));
  117.     SetControlValue (self->mFromValuesList2Handle, GetFromValuesList3 (self->mData));
  118.     SetControlValue (self->mFromMenuHandle, GetFromMenu2 (self->mData));
  119.     BuildTextListList (self->mTextListHandle);
  120.     SetListBoxChoice (self->mTextListHandle, GetTextList2 (self->mData));
  121. }
  122.  
  123. //----------
  124. void    ModalStuff_DoItem (
  125.     ModalStuff*        self,
  126.     SInt16        inItemHit)
  127. {
  128.     switch (inItemHit) {
  129.     case kOKButton:
  130.             AMDialog_SetResult ((AMDialog*)self, true);
  131.         break;
  132.     case kToolsPalette:
  133.             SetTools2 (self->mData, GetControlValue (self->mToolsHandle));
  134.         break;
  135.     case kFromValuesList2Popup:
  136.             SetFromValuesList3 (self->mData, GetControlValue (self->mFromValuesList2Handle));
  137.         break;
  138.     case kFromMenuPopup:
  139.             SetFromMenu2 (self->mData, GetControlValue (self->mFromMenuHandle));
  140.         break;
  141.     case kTextListList:
  142.             SetTextList2 (self->mData, GetListBoxChoice (self->mTextListHandle));
  143.         break;
  144.  
  145.     } // switch
  146. }
  147.  
  148. //----------
  149. void    ModalStuff_DataChanged (
  150.     ModalStuff*        self,
  151.     long        inDataID)
  152. {
  153.     if (inDataID == idTools2) {
  154.         SetControlValue (self->mToolsHandle, GetTools2 (self->mData));
  155.     }
  156.     if (inDataID == idFromValuesList3) {
  157.         SetControlValue (self->mFromValuesList2Handle, GetFromValuesList3 (self->mData));
  158.     }
  159.     if (inDataID == idFromMenu2) {
  160.         SetControlValue (self->mFromMenuHandle, GetFromMenu2 (self->mData));
  161.     }
  162. }
  163.  
  164. //----------
  165. Boolean        ModalStuff_Filter (
  166.     ModalStuff*            self,
  167.     EventRecord            *ioEvent,
  168.     DialogItemIndex        *outItemHit)
  169. {
  170.     return AMDialog_Filter ((AMDialog*)self, ioEvent, outItemHit);
  171. }
  172.